package Game;

import javax.swing.*;//图形界面开发包
import java.awt.*;//图形用户界面包
import java.awt.event.*;//ActionListener(动作事件监听器)接口所在包


public class Start extends JFrame{
	public static final int WIDTH = 400;//定义常量 - 窗口宽度
	public static final int HEIGHT = 350;//定义常量 - 窗口高度
	private boolean flag;
	private int isRemote=0;
	private int isMelee=0;

	//职业选择面板
	/*
		public void showCharacterSelectionPanel(boolean isDoublePlayer) {
		// 清空当前面板
		Container contentPane = getContentPane();
		contentPane.removeAll(); // 移除所有组件
		contentPane.revalidate(); // 重新验证布局
		contentPane.repaint(); // 重新绘制面板

		this.requestFocus();

		// 设置窗口属性
		setSize(WIDTH,HEIGHT);
		setResizable(false);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("职业选择");

		// 初始化内容面板
		contentPane.setBackground(Color.LIGHT_GRAY);//设置内容面板的背景颜色 - 浅灰色
		contentPane.setLayout(new BorderLayout());

		// 添加标题
		JLabel titleLabel = new JLabel("Character Choose", SwingConstants.CENTER);
		titleLabel.setFont(new Font("Arial", Font.BOLD, 40));
		contentPane.add(titleLabel, BorderLayout.NORTH);



		// 创建按钮面板
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new FlowLayout());

		// 近战按钮
		ImageIcon meleeIcon = new ImageIcon(Start.class.getResource("/images/Meleebutton.png"));
		meleeIcon.setImage(meleeIcon.getImage().getScaledInstance(140,280,Image.SCALE_DEFAULT));
		JButton meleeButton = new JButton(meleeIcon);

		meleeButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 处理近战选择
				setVisible(false);
				new GameClient(isDoublePlayer).lauchFrame();
			}
		});

		// 远程按钮
		ImageIcon rangedIcon = new ImageIcon(Start.class.getResource("/images/Remotebutton.png"));
		rangedIcon.setImage(rangedIcon.getImage().getScaledInstance(140,280,Image.SCALE_DEFAULT));
		JButton rangedButton = new JButton(rangedIcon);
		rangedButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 处理远程选择
				setVisible(false);
				new GameClient(isDoublePlayer).lauchFrame();
			}
		});

		// 将按钮添加到按钮面板
		buttonPanel.add(meleeButton);
		buttonPanel.add(rangedButton);

		// 将按钮面板添加到内容面板的中心
		contentPane.add(buttonPanel, BorderLayout.CENTER);

		// 显示窗口
		setVisible(true);

	}
	*/
    //职业选择面板
	public void showCharacterSelectionPanel(boolean isDoublePlayer,int isremote,int ismelee) {
		// 清空当前面板sz
		Container contentPane = getContentPane();
		contentPane.removeAll(); // 移除所有组件
		contentPane.revalidate(); // 重新验证布局
		contentPane.repaint(); // 重新绘制面板

		this.requestFocus();

		// 设置窗口属性
		setSize(WIDTH,HEIGHT);
		setResizable(false);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("职业选择");

		// 初始化内容面板
		contentPane.setBackground(Color.LIGHT_GRAY);//设置内容面板的背景颜色 - 浅灰色
		contentPane.setLayout(new BorderLayout());

		// 添加标题
		JLabel titleLabel = new JLabel("Character Choose", SwingConstants.CENTER);
		titleLabel.setFont(new Font("Arial", Font.BOLD, 40));
		contentPane.add(titleLabel, BorderLayout.NORTH);

		// 创建按钮面板
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new FlowLayout());

		// 近战按钮
		ImageIcon meleeIcon = new ImageIcon(Start.class.getResource("/images/Meleebutton.png"));
		meleeIcon.setImage(meleeIcon.getImage().getScaledInstance(140,280,Image.SCALE_DEFAULT));
		JButton meleeButton = new JButton(meleeIcon);

		meleeButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 处理近战选择

				setVisible(false);

				if(!isDoublePlayer)//单人
				{
					new GameClient(isDoublePlayer,0,-1).lauchFrame();//选择了近战
				}
				else
				{
					if(isMelee==0&&isRemote==0)//第一次选择为近战
					{
						isMelee=1;
						showCharacterSelectionPanel(isDoublePlayer,isRemote,isMelee);
					}
					else if(isRemote==0&&isMelee==1)//第二次选择依然为近战的情况
					{
						new GameClient(isDoublePlayer,0,1).lauchFrame();
					}
					else if(isMelee==0&&isRemote==1)//第一次为远程，第二次为近战的情况
					{
						new GameClient(isDoublePlayer,1,2).lauchFrame();
					}
				}


			}
		});

		// 远程按钮
		ImageIcon rangedIcon = new ImageIcon(Start.class.getResource("/images/Remotebutton.png"));
		rangedIcon.setImage(rangedIcon.getImage().getScaledInstance(140,280,Image.SCALE_DEFAULT));
		JButton rangedButton = new JButton(rangedIcon);

		rangedButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 处理远程选择
				setVisible(false);

				if(!isDoublePlayer)//单人
				{
					new GameClient(isDoublePlayer,-1,0).lauchFrame();//选择了远程
				}
				else
				{
					if(isRemote==0&&isMelee==0)//第一次选择为远程
					{
						isRemote=1;
						showCharacterSelectionPanel(isDoublePlayer,isRemote,isMelee);
					}
					else if(isRemote==1&&isMelee==0)//第二次依然为远程的情况
					{
						new GameClient(isDoublePlayer,1,0).lauchFrame();
					}
					else if(isRemote==0&&isMelee==1)//第一次为近战，第二次为远程的情况
					{
						new GameClient(isDoublePlayer,2,1).lauchFrame();
					}

				}


			}
		});

		// 将按钮添加到按钮面板
		buttonPanel.add(meleeButton);
		buttonPanel.add(rangedButton);

		// 将按钮面板添加到内容面板的中心
		contentPane.add(buttonPanel, BorderLayout.CENTER);

		// 显示窗口
		setVisible(true);

	}

	//单人游戏者监听器类
	/* 调用 java.awt.event.*包 中的 ActionListener接口/类
	*/
		class SinglePlayerListener implements ActionListener {
			@Override
			/* 重写 actionPerformed方法*/

			//方法作用 - 响应用户点击事件并启动单人游戏
			public void actionPerformed(ActionEvent e) {
				// 创建一个GameClient实例，参数false表示单人模式
				// 紧接调用lauchFrame方法启动游戏界面。

				setVisible(false);
				showCharacterSelectionPanel(false,0,0);


			}




	}

	class DoublePlayerListener implements ActionListener {
		//响应用户点击事件并启动双人游戏
		@Override
		/* 重写 actionPerformed方法	*/

		//方法作用 - 响应用户点击事件并启动双人游戏
	    public void actionPerformed(ActionEvent e) {
			//显示职业选择面板
			setVisible(false);
			showCharacterSelectionPanel(true,0,0);

	    }
	}


	class WindowDestroyer extends WindowAdapter{
		@Override
		/*重写 windowClosing方法
		*目的:窗口关闭时执行特定操作
		 */
		public void windowClosing(WindowEvent e){
			// WindowEvent e - 是事件对象，包含了有关窗口事件的信息（例如，触发事件的窗口）。
		}
	}

    //初始化方法
	public Start(){
		//1.游戏启动窗口初始化
		setSize(WIDTH, HEIGHT);//设置窗口大小
		setResizable(false);//窗口可调整大小 - 否
		setLocationRelativeTo(null);//设置屏幕位置 - null:相对于屏幕中央
		addWindowListener(new WindowDestroyer());//为窗口添加一个窗口监听器
		setTitle("408");//设置窗口标题
		//设置窗口图标
		ImageIcon windowIcon = new ImageIcon(Start.class.getResource("/images/windowImage.png"));
		setIconImage(windowIcon.getImage());

		//2.内容面板初始化
		Container contentPane = getContentPane();//获取窗口的内容面板，用于添加组件
		contentPane.setBackground(Color.LIGHT_GRAY);//设置内容面板的背景颜色 - 浅灰色。

		//3.按钮面板初始化
		JPanel buttonPanel = new JPanel();//创建一个新的面板，用于容纳按钮
		buttonPanel.setBackground(Color.WHITE);//设置按钮面板的背景颜色为白色

		//4.布局管理
		contentPane.setLayout(new FlowLayout());//设置内容面板的布局管理器为FlowLayout，使组件从左到右排列

		//5.单人游戏按钮创建
		ImageIcon singleIcon = new ImageIcon(Start.class.getResource("/images/single.jpg"));//创建图像图标并加载按钮图标
		singleIcon.setImage(singleIcon.getImage().getScaledInstance(380,140,Image.SCALE_DEFAULT));//将图标缩放到指定的宽度和高度
		JButton singleButton = new JButton();//创建一个按钮
		singleButton.setIcon(singleIcon);//为按钮设置图标
		singleButton.addActionListener(new SinglePlayerListener());//为按钮添加单人游戏点击事件的监听器。
		contentPane.add(singleButton);//内容面板添加单人按钮组件


		ImageIcon doubleIcon = new ImageIcon(Start.class.getResource("/images/double.jpg"));
		doubleIcon.setImage(doubleIcon.getImage().getScaledInstance(380,140,Image.SCALE_DEFAULT));
		JButton doubleButton = new JButton();
		doubleButton.setIcon(doubleIcon);
		doubleButton.addActionListener(new DoublePlayerListener());
		contentPane.add(doubleButton);

		setVisible(true);//使初始化后页面可见
	}
}
